package com.wl.designpattern.flyweight;

/**
 * 享元模式 （结构型模式）
 * 使用共享对象可有效地支持大量的细粒度的对象.
 *
 * Flyweight(享元抽象对象)
 * ConcreteFlyweight (具体享元角色) 实现抽象享元角色中定义的业务
 * UnsharedConcreteFlyweight（不可共享的享元角色）
 * FlyweightFactory (享元工厂)
 *
 * 应用场景
 * 系统存在大量相似或相同的对象。
 * 外部状态相同类似情况下。
 * 需要缓冲池时。
 *
 * 缺点
 * 将对象分为内部状态和外部状态两部分，导致系统变复杂，逻辑也更复杂。
 * 将享元对象的状态外部化，而读取外部状态使得运行时间稍微变长。
 *
 * android 应用
 * Handler机制中的 Message
 *
 *
 * Created by wangliang on 2021/2/27.
 */
public class Test {
    public static void main(String[] args) {
        BikeFactory factory=new BikeFactory();
        IBike ofo = factory.getBike("ofo");
        ofo.billing(2);
        IBike mobike = factory.getBike("Mobike");
        mobike.billing(1);
        IBike ofo1 = factory.getBike("ofo");
        ofo1.billing(3);
    }
}
